<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class LoginController extends Controller
{
    //
    public function index()
    {
        //判断用户是否登录过
        if(auth()->check()){
            return redirect(route('admin.index'));
        }
        return view('admin.login.login');
    }
    //登录 别名 admin.login 根据别名生成url
    public function login(Request $request)
    {
        //表单验证
        $post = $this->validate($request, [
            'username' => 'required',
            'password' => 'required'
        ], [
            'username.required' => '要写账号哦，宝贝',//自己定义提示
            'password.required' => '要写密码哦，宝贝' //自己定义提示
        ]);
        //登录
        $bool = auth()->attempt($post);
        //判断是否登录成功
        if($bool){
            //返回当前登录的用户模型，存储在session中
            //laravel 默认session存储在文件中，优化到memacached redis
//            $model = auth()->user()->toArray();
            //得到权限
            //判断是不是超级管理员
            if(config('rbac.super') !=$post['username']){
                $userModel = auth()->user();
                $roleModel = $userModel->role;
                $nodeArr = $roleModel->nodes()->pluck('route_name','id')->toArray();
                //写入session
                session(['admin.auth'=>$nodeArr]);
            }else{
                session(['admin.auth'=>true]);

            }


            return redirect(route('admin.index'));
        }
        //withErrors 把信息写入到验证错误提示中 特殊的session laravel中叫闪存
        //闪存 从设置好之后，只能在第一个http请求中获取到数据，以后就没有了
        return redirect(route('admin.login'))->withErrors(['error'=>'登录失败']);
    }
}
